// #[cfg(test)]

// test 模块上的#[cfg(test)]标注
// 只有运行cargo test才会进行编译和运行  包括模块中的helper函数和#[test]标注的函数

// 这是单元测试的标注，集成测试在不同目录下，不需要此标注

// cfg :configuration 配置
//  - 只有再指定的配置选项下才被包含

// 测试私有函数 即函数前没有添加pub的函数

// 集成测试
// 在与src文件创建一个tests文件夹 每个文件都会被编译成单独的crate
// 运行一个特定的集成测试：cargo test 函数名
// 运行某个测试文件内的所有测试：cargo test --test 文件名

pub fn add_two(i: i32) -> i32 {
    i + 2
}

#[cfg(test)]
mod test {

    #[test]
    fn f1() {}
    fn f2() {}
    // 以上两个函数再cargo test时都会被编译
}
